package Thread;

/**
 * @author 杜伟毅
 * @version 1.0
 * @since 2024/08/21
 * Wait方法联系
 */
public class WaitTest {
    public static final Object MONTIOR =new Object();

    public static void main(String[] args) {
        new Thread(()->{
            synchronized (MONTIOR){
                System.out.println("线程1开始");
                try {
                    MONTIOR.wait();//意思：永远地等待，直到被唤醒
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                System.out.println("线程1结束");
            }
        }).start();


        new Thread(()->{
            synchronized (MONTIOR){
                System.out.println("线程2开始");
                ThreadUtils.sleep(2000);
                /*
                下面这段代码必须在持有这把锁（MONITOR）才能用，比如是放在main线程上使用，则会报错
                 */
                MONTIOR.notify();//notify意思：随机唤醒某个线程，notifyAll：唤醒全部线程
                System.out.println("线程2结束");
            }
        }).start();
    }
}
